package com.example.trabajofinal.backend;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.util.Log;

import com.example.trabajofinal.model.Curso;
import com.google.gson.Gson;

public class CursosManager {
	private static CursosManager instance;
	private ArrayList<Curso> mCursos;

	private CursosManager(){

	}

	public static CursosManager getInstance(){
		createInstance();
		return instance;
	}
	
	public static synchronized void createInstance()
	{

		if(instance == null){
			instance = new CursosManager();
		}
	}

	public void downloadCursos(){
		mCursos = getCursosWithGSON();
	}

	public ArrayList<Curso> getCursos(){
		return mCursos;
	}


	private ArrayList<Curso> getCursosWithGSON()
	{
		ArrayList<Curso> cursosLst = new ArrayList<Curso>();
		InputStreamReader response = getFromServer();

		Log.d("Final", response.toString());

		if(response != null)
		{	
			Gson gson = new Gson();
			CursosGson[] cursos = gson.fromJson(response, CursosGson[].class);

			for (CursosGson curso : cursos) {
				cursosLst.add(new Curso(curso.getNombre(), curso.getDescripcion(), curso.getImagen(), curso.getDias_horarios()));
			}
		}

		return cursosLst;
	}

	private InputStreamReader getFromServer()
	{	
		HttpResponse httpResponse;
		InputStreamReader response = null;
		HttpClient httpclient = new DefaultHttpClient();  

		try 
		{  
			httpResponse = httpclient.execute(new HttpGet("http://www.black-tobacco.com/lab/android/getCursos"));
			response = new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8");
		} 
		catch (ClientProtocolException e) 
		{  
			e.printStackTrace();  
		} 
		catch (IOException e) 
		{  
			e.printStackTrace();  
		}  

		return response;
	}

	private class CursosGson 
	{
		private String nombre;
		private String descripcion;
		private String imagen;
		private String dias_horarios;

		public String getNombre() {
			return nombre;
		}
//		public void setNombre(String nombre) {
//			this.nombre = nombre;
//		}
		public String getDescripcion() {
			return descripcion;
		}
//		public void setDescripcion(String texto) {
//			this.descripcion = texto;
//		}
		public String getImagen() {
			return imagen;
		}
//		public void setImagen(String imagen) {
//			this.imagen = imagen;
//		}
		public String getDias_horarios() {
			return dias_horarios;
		}
//		public void setDias_horarios(String dias_horarios) {
//			this.dias_horarios = dias_horarios;
//		}
	}
}
